Skip to main content

Full text of "USPTO Patents Application 10500820"

See other formats


DESCRIPTION 



UNIT-TO-UNIT DATA EXCHANGE SYSTEM, AND UNIT, EXCHANGE COMPLETION 
DATA KEEPING DEVICE AND PROGRAM FOR USE IN THE SAME 

5 

TECHNICAL FIELD BACKGROUND OF THE INVENTION 
1. Field of the Invention 

The present invention relates to a system for exchanging 
electronic data between units, and more particularly to a system 
10 in which the exchange process can be completed in a fair manner 
for both of the units involved in the exchange process. 



BACKGROUND ART 

2. Description of the Related Art 
15 With high-speed communications networks, such as ADSL 

(Asymmetric Digital Subscriber Line) and FTTH (Fiber To The Home) , 
becoming more widespread in recent years, P2P (Peer To Peer) data 
exchange systems have been used for exchanging electronic data 
between units. 

20 Early P2P systems were pure P2P data exchange systems in 

which each system included only two units. For example, WinMX 
is one of such systems. In a pure P2P data exchange system, a 
unit only has 1) a function of requesting the other party's unit 
to transmit data of interest, 2) a function of transmitting data 

25 requested by the other party's unit, 3) a function of receiving 



data from the other party f s unit , and 4) a function of discontinuing 
data transmission to the other party f s unit . With these functions , 
data can be transmitted and received by each other. However, due 
to the difference in data size between exchanged data or the 
5 difference in data transmission/reception speedbetween the units, 
one unit may complete receiving data earlier than the other unit. 
Therefore, in a pure P2P data exchange system, a first party may 
discontinue the data transmission to a second party when the first 
party completes receiving the data of interest—, thus This unfairly 
10 preventing prevents the second party from completing the data 
reception while the first party has completed receiving the data 
of interest. 

In view of this, methods for preventing such an unfair 
practice have been proposed in the art, in which a server is provided 
15 that functions as a mediator for the data exchange process (see, 
for example, United States Patent No. 6061792, and "Asynchronous 
Protocols for Optimistic Fair Exchange" by N . Asokan, Victor Shoup 
andMichael Waidner, Research Report RZ 2 97 6 (#93022), IBMResearch, 
December 1997) . 

20 In such a P2P data exchange system with a mediator server, 

data to be exchanged arc is first uploaded to the mediator server 
before initiating the data exchange between the units so that it 
is possible to address a situation where either unit fails to obtain 
the data of interest due to a certain problem during the data exchange 

25 between the units . In the P2P data exchange system with a mediator 



server, even if one terminal becomes unable to obtain the data 
of interest during the data exchange between the units, the unit 
failing to obtain the data of interest can be complemented with 
the data from the mediator server because the mediator server has 
5 the data being exchanged. 

DISCLOSURE BRIEF DESCRIPTION OF THE INVENTION 
The following problems arise when using a pure P2P data 
exchange system such as WinMx . If an unfair practice^ as described 

10 above^ occurs during a data exchange between units, the user of 
one unit may wish to discontinue the data exchange. For example, 
in a data exchange between unit A and unit B, if unit A obtains 
data of interest earlier than unit A — B and terminates the 
communication session with unit B, the user of unit B may be 

15 displeased by the failure to obtain data from unit A and may desire 
to stop the data exchange with unit A. However, in such a situation, 
unit B is no longer able to, for example, invalidate or retrieve 
the data that has been completely passed to unit A. Thus, in a 
conventional pure P2P data exchange system, a unit cannot cancel 

20 a data exchange that is once decided to be performed if the other 
unit first completes receiving data of interest. Therefore, in 
the case of an unfair exchange, there may occur a situation where 
only one party gains to obtain the data of interest while the other 
party gains nothing. 

25 In a P2P data exchange system with a mediator server, data 



arc is exchanged between terminals after the data are is once 
uploaded to the mediator server. Therefore, if the communication 
session fails for one terminal, data is transmitted to the terminal 
from the mediator server, thereby ensuring that both terminals 
obtain data of interest. However, since data to be exchanged 
between the units need to be first uploaded to the mediator server, 
the communications cost and the load on the mediator server increase 
in proportion to the amount of the exchanged data. 

Therefore, an object of the present invention is to provide 
(i) a unit-to-unit data exchange system in which an unfair exchange 
is prevented without increasing the communications cost or the 
load on the server, and (ii) a unit, and (iii) a server and a program 
for use in such a system. To achieve the above object, the present 
invention has the following aspects . A first aspect of the present 
invention is directed to a system for exchanging data between units 
connected to each other via a communications medium-^ including : 
This system includes: a first unit having at least one piece of 
data that can be exchanged and requesting to exchange data with 
another unit; a second unit having data of interest to the first 
unit; and an exchange completion data keeping device connected 
to the first and second units via the communications mediu m, the 
exchange completion data keeping device being (i) for keeping 
first exchange completion data that is necessary, after completion 
of the data exchange between the first and second units, (ii) for 
reproducing data obtained by the first unit and second exchange 



completion data that is necessary, after completion of the data 
exchange between the first and second units, and (iii) for 
reproducing data obtained by the second unit, wherein the exchange 
completion data keeping device includes exchange completion data 
5 transmission means for transmitting the first exchange completion 
data to the first unit and the second exchange completion data 
to the second unit only when the first and second units have 
successfully received data of interest. 

Preferably, the first unit includes: first exchange 

10 completion data production means for producing the second exchange 
completion data; and first exchange completion data transmission 
means for transmitting the second exchange completion data produced 
by the first exchange completion data production means to the 
exchange completion data keeping device ^. Further, the second unit 

15 includes: second exchange completion data production means for 
producing the first exchange completion data; and second exchange 
completion data transmission means for transmitting the first 
exchange completion data produced by the second exchange completion 
data production means to the exchange completion data keeping 

20 device^ and — trhe — The exchange completion data keeping device 
further includes exchange completion data keepingmeans for keeping 
the first and second exchange completion data transmitted from 
the exchange completion data transmission means so that each unit 
from which the exchange completion data has been transmitted can 

25 be identified. 



Preferably, the first unit further includes: first data 
conversion means for converting data owned by the first unit to 
data that can be reproduced successfully only by using the second 
exchange completion data; and first data recovery means for 
5 recovering data that can be reproduced successfully from data 
received from the second unit by using the first exchange completion 
datat. and Further, the second unit further includes: second data 
conversion means for converting data owned by the second unit to 
data that can be reproduced successfully only by using the first 
10 exchange completion data; and second data recovery means for 
recovering data that can be reproduced successfully from data 
received from the first unit by using the second exchange completion 
data . 

Preferably, the first unit further includes first exchange 
15 completion data production requesting means for requesting the 
exchange completion data keeping device to produce the second 
exchange completion datat^ In addition, the second unit further 
includes second exchange completion data production requesting 
means for requesting the exchange completion data keeping device 
20 to produce the first exchange completion data^. and the The exchange 
completion data keeping device further includes: exchange 
completion data production means for producing the first and second 
exchange completion data in response to the requests from the first 
and second exchange completion data production requesting means; 
25 and exchange completion data keeping means for keeping the first 



and second exchange completion data produced by the exchange 
completion data production means so that each requesting unit can 
be identified. 

Preferably, each of the first and second units further 
includes: data conversion means for converting first data owned 
by the unit to second data that can be reproduced successfully 
only by using the exchange completion data; and data recovery means 
for recovering data that can be reproduced successfully from data 
received from the other unit by using the exchange completion data 
transmitted from the exchange completion data transmission meanst^ 
the The exchange completion data keeping device further includes 
conversion process data production/transmission means for 
producing first and second conversion process data used for ( i ) 
converting the first data to the second data that can be reproduced 
successfully by using the first and second exchange completion 
data, and (ii) transmitting the first conversion process data to 
the second unit and the second conversion process data to the first 
unit^ the The data conversion means of the first unit converts 
the first data to the second data by using the second conversion 
process data from the conversion process data transmission meanst^ 
and the The data conversion means of the second unit converts 
the first data to the second data by using the first conversion 
process data from the conversion process data transmission means. 

For example, the first conversion process data is a first 
encryption key^ the first exchange completion data is a first 



decryption key corresponding to the first encryption key^ the 
second conversion process data is a second encryption keyt^ and 
the second exchange completion data is a second decryption key 
corresponding to the second encryption key. 

Preferably, each of the first and second units further 
includes communication result notification means for notifying 
the exchange completion data keeping device of a communication 
result when a communication session with the other unit is 

terminated ^and Further, the exchange completion data 

transmission means determines whether or not both of the first 
and second units have successfully received data of interest based 
on the communication results from the communication result 
notification means of the first unit and that of the second unit. 

Preferably, the communication result is information 
indicating whether or not the data of interest has been received 
successfully^, and the The exchange completion data transmission 
means transmits exchange completion data if the exchange completion 
data transmission means receives information indicating that the 
data has been received successfully from both the first and second 
units . 

For example, the first exchange completion data is a 
decryption key used for decrypting data given by the second unit 
to the first unitt^ and the second exchange completion data is 
a decryption key used for decrypting data given by the first unit 
to the second unit. 

8 



Preferably, each of the first and second units further 
includes resend requesting means for requesting the other unit 
to resend data of interest if the unit fails to fully receive the 
data of interest. 
5 A second aspect of the present invention is directed to a 

unit for exchanging data owned by the unit with data of interest 
owned by another unit- j_ including: The unit includes: exchange 
completion data production means for producing first exchange 
completion data that is necessary for reproducing the data owned 

10 by the unit; exchange completion data registration means for 
registering the first exchange completion data produced by the 
exchange completion data product ion means at an exchange completion 
data keeping device for keeping exchange completion data; and 
exchange completion data obtaining means for obtaining, from the 

15 exchange completion data keeping device, second exchange 
completion data that is necessary for reproducing data obtained 
from the other unit when a communication session with the other 
unit is terminated. 

Preferably, the unit further includes : data conversion means 

20 for converting data owned by the unit to data that can be reproduced 
successfully only by using the first exchange completion data; 
and data recovery means for recovering data that can be reproduced 
successfully from data received from the other unit by using the 
second exchange completion data obtained by the exchange completion 

25 data obtaining means. 



Preferably, the unit further includes exchange history 
storing means for storing a history of data exchanges made with 
other units, wherein: the data conversion means changes a data 
conversion method based on the exchange history; and the exchange 
5 completion data production means changes a method of producing 
exchange completion data based on the exchange history. 

Preferably, the unit further includes resend requesting 
means for requesting the other unit to resend data of interest 
if the unit fails to fully receive the data of interest. 

10 A third aspect of the present invention is directed to a 

unit for exchanging data owned by the unit with data of interest 
owned by another unit— j_ including ; — The unit includes: exchange 
completion data production requesting means for requesting an 
exchange completion data keeping device for keeping exchange 

15 completion data to produce first exchange completion data that 
is necessary for reproducing the data owned by the unit; and exchange 
completion data obtaining means for obtaining, from the exchange 
completion data keeping device, second exchange completion data 
that is necessary for reproducing data obtained from the other 

20 unit when a communication session with the other unit is terminated. 

Preferably, the unit further includes: conversion process 
data reception means for receiving conversion process data used 
for converting the data owned by the unit so that the data can 
be reproduced successfully by using the first exchange completion 

25 data sent from the exchange completion data keeping device; data 



conversion means for converting the data owned by the unit by using 
the conversion process data received by the conversion process 
data reception means; and data recovery means for recovering data 
that can be reproduced successfully from data obtained from the 
5 other unit by using the second exchange completion data obtained 
by the exchange completion data obtaining means. 

Preferably, the unit further includes: exchange history 
storing means for storing a history of data exchanges made with 
other units ; and conversion method notification means for notifying 

10 the exchange completion data keeping device of a conversion method 
used by the data conversion means based on the exchange history, 
wherein the data conversion means converts the data owned by the 
unit by using conversion process data using the specified 
conversion method sent from the exchange completion data keeping 

15 device. 

Preferably, the unit further includes resend requesting 
means for requesting the other unit to resend data of interest 
if the unit fails to fully receive the data of interest. 

A fourth aspect of the present invention is directed to an 

20 exchange completion data keeping device used in a system for 
exchanging data between units connected to each other via a 
communications medium—^ including: The exchange completion data 
keeping device includes: exchange completion data keeping means 
for keeping exchange completion data necessary for reproducing 

25 data exchanged between a first unit and a second unit; and exchange 

11 



completion data transmission means for transmitting exchange 
completion data that is necessary for reproducing data obtained 
by the first unit to the first unit and transmitting exchange 
completion data that is necessary for reproducing data obtained 
5 by the second unit to the second unit only when both of the first 
and second units have successfully received data of interest. 

Preferably, the exchange completion data keeping device 
further includes: exchange completion data production means for 
producing the exchange completion data in response to a request 

10 from the first and second units; and exchange completion data 
keeping means for keeping the exchange completion data produced 
by the exchange completion data production means so that each 
requesting unit can be identified. 

Preferably, the exchange completion data keeping device 

15 further includes conversion process data production/transmission 
means for producing conversion process data such that exchanged 
data can be reproduced successfully at the first and second units 
by using the exchange completion data produced by the exchange 
completion data production means, and for transmitting the 

20 conversion process data to the first and second units. 

Preferably, the exchange completion data transmission means 
determines whether or not both of the first and second units have 
successfully received data of interest based on communication 
results from the first and second units. 

25 For example, the communication result is information 

12 



indicating whether or not the data of interest has been received 
successfullyt. and the The exchange completion data transmission 
means transmits exchange completion data when receiving 
information indicating that the data has been received successfully 
5 from the first and second units. 

Preferably, the exchange completion data keeping device 
further includes exchange completion data deletion means for 
deleting exchange completion data kept by the exchange completion 
data keeping device if a predetermined condition is met. 

10 For example, the predetermined condition is such that the 

exchange completion data deletion means deletes exchange 
completion data transmitted to the first and second units from 
the exchange completion data transmission means if the first and 
second units have successfully received the transmitted exchange 

15 completion data. 

For example, the predetermined condition is such that the 
exchange completion data deletion means deletes the exchange 
completion data registered by the first and second units if the 
exchange completion data deletion means is notified from either 

20 unit that the data of interest has not been received successfully. 

A fifth aspect of the present invention is directed to a 
program for instructing a computer device to exchange data owned 
by the computer device with data of interest owned by another 
computer device—, including the steps of: The program causing the 

25 computer device to execute a method including: instructing the 



13 



computer device to produce first exchange completion data that 
is necessary for reproducing the data owned by the computer device; 
instructing the computer device to register the produced first 
exchange completion data at an exchange completion data keeping 
5 device for keeping exchange completion data; and instructing the 
computer device to obtain, from the exchange completion data 
keeping device, second exchange completion data that is necessary 
for reproducing data obtained from the other computer device when 
a communication session with the other computer device is 

10 terminated. 

A sixth aspect of the present invention is directed to a 
program for instructing a computer device to exchange data owned 
by the computer device with data of interest owned by another 
computer device—. including the steps of: — The program causing 

15 the computer device to execute a method including: instructing 
the computer device to request an exchange completion data keeping 
device for keeping exchange completion data to produce first 
exchange completion data that is necessary for reproducing the 
data owned by the computer device; and instructing the computer 

20 device to obtain, from the exchange completion data keeping device, 
second exchange completion data that is necessary for reproducing 
data obtained from the other computer device when a communication 
session with the other computer device is terminated. 

A seventh aspect of the present invention is directed to 

25 a program for instructing a computer device, which is used in a 

14 



system for exchanging data between computer devices connected to 
each other via a communications medium, to function as: exchange 
completion data keeping means for keeping exchange completion data 
necessary for reproducing data exchanged between a first computer 
5 device and a second computer device; and exchange completion data 
transmission means for transmitting exchange completion data that 
is necessary for reproducing data obtained by the first computer 
device to the first computer device and for transmitting exchange 
completion data that is necessary for reproducing data obtained 

10 by the second computer device to the second computer device only 
when both of the first and second computer devices have successfully 
received data of interest. 

The effects of the present invention will now be described. 
According to the present invention, the data to be exchangedbetween 

15 units will not themselves be uploaded to the mediating server (the 
exchange completion data keeping device) , but only those data (the 
exchange completion data) that are necessary for completing the 
data exchange are uploaded to the exchange completion data keeping 
device being the server. This reduces the problem that the 

20 communications cost and the load on the mediator server increase 
in proportion to the amount of data exchanged between units. In 
addition, according to the present invent ion, two units exchanging 
data with each other can obtain the exchange completion data only 
when both of the units have successfully received data of interest . 

25 Therefore, in the case of an abnormal termination of the 



communication session, e.g., in the case of disconnection on the 
side of one unit whereby the other unit fail to successfully receive 
the data of interest, one of the units that has terminated the 
communication session cannot obtain the exchange completion data. 
5 Then, neither of the units will be able to reproduce the data of 
interest. Thus, a fair data exchange system is realized. 

Moreover, the exchange completion data is produced by each 
unit, thereby further reducing the load on the mediating server. 
Each unit transmits its data to the other party's unit after 

10 converting it to data that cannot be reproduced successfully 
without the use of exchange completion data. Therefore, the other 
party's unit cannot successfully reproduce the data unless it 
obtains the exchange completion data. 

Conversely, the server may produce the exchange completion 

15 data, in which case each unit does not have to include means for 
producing the exchange completion data, thus reducing the load 
on the unit. 

For example, a unit may encrypt data and transmit the 
encrypted data to the other party's unit, and received data can 
20 be reproduced by using a decryption key as encrypted exchange 
completion data . Then, it is possible to easily realize the system 
of the present invention by employing commonly-available 
encryption/ decryption software . 

The exchange completion data keeping device determines 
25 whether or not each unit exchanging its data with another has 



successfully received data based on the communication result sent 
from the unit. Therefore, it is possible to easily determine 
whether or not the data exchange has been performed successfully. 

If a unit fails to completely receive data of interest, the 
5 unit issues a resend request to the other party's unit, ensuring 
that the unit can completely receive the data of interest. 

A unit may produce the exchange completion data based on 
its history of data exchanges made with other units to simplify 
the recovery process at the other party's unit. Thus, it is 

10 possible to provide an easy-to-use system in which an exchange 
with a highly trusted party can be performed quickly. Moreover, 
a unit may simplify the conversion of data to be transmitted based 
on its history of data exchanges made with other units, whereby 
a data exchange with a highly trusted party can be performed more 

15 quickly. 

If a predetermined condition is met, the exchange completion 
data is deleted from the network, whereby it is possible to prevent 
the exchange completion data from being left unremoved for a long 
time and being misused. 
20 The program of the present invention can be distributed to 

each party 1 s computer device to realize an easy-to-use unit-to-unit 
data exchange system, thus facilitating the circulation of 
information contents . 

25 BRIEF DESCRIPTION OF THE DRAWINGS 



17 



FIG. 1 is a block diagram illustrating a general 
configuration of a unit-to-unit data exchange system Sa with a 
mediator server according to a first embodiment of the present 
invention . 

5 FIG. 2 is a block diagram illustrating a functional 

configuration of the inside of a unit 11. 

FIG. 3 is a diagram illustrating an exemplary data structure 
of data including data IDs and associated public data IDs. 

FIG. 4 is a diagram illustrating an exemplary data structure 
10 of data associated with the data IDs of FIG. 3. 

FIG. 5 is a diagram illustrating a data structure of public 
contents information associated with the public data IDs of FIG. 
3. 

FIG. 6 is a block diagram illustrating a detailed functional 
15 configuration of the inside of a data conversion section 111. 

FIG. 7 is a block diagram illustrating a functional 
configuration of the inside of an exchange completion data keeping 
device 21 . 

FIG. 8 is a diagram illustrating an exemplary data structure 
20 of a determination table. 

FIG. 9 is a diagram illustrating an exemplary data structure 
of exchange completion data associated with exchange completion 
data IDs of FIG. 8. 

FIG. 10 is ablock diagram illustrating a detailed functional 
25 configuration of the inside of an exchange completion data 



transmission determination section 211. 

FIG. 11 is a block diagram illustrating a functional 
configuration of the inside of a public data keeping device 31. 

FIG. 12 is a diagram illustrating an exemplary data structure 
5 of public data list. 

FIG. 13 is a diagram illustrating an exemplary data structure 
of contents information associated with public data IDs of FIG. 
12 . 

FIG. 14 is a sequence diagram illustrating an operation of 
10 the unit 11 and the public data keeping device 31 when the unit 
11 registers the contents information on its public data at the 
public data keeping device 31. 

FIG. 15 is a sequence diagram illustrating an operation of 
the public data keeping device 31 and the unit 11 when the public 
15 data keeping device 31 receives a REGI STER_PUBLIC_DATA message. 

FIG. 16 is a sequence diagram illustrating an operation of 
a unit 11a when obtaining a unit ID. 

FIG. 17 is a sequence diagram illustrating an operation of 
the public data keeping device 31 and the unit 11a when the public 
20 data keeping device 31 receives an OBTAIN_REGISTERING_UNIT_ID 
message . 

FIG. 18 is a sequence diagram illustrating an operation of 
the unit 11a and a unit lib from when the unit 11a requests the 
unit lib to exchange data until the unit 11a receives a response 
25 thereto. 

19 



FIG. 19 is a sequence diagram illustrating an operation of 
the unit 11a and the exchange completion data keeping device 21 
from when the unit 11a requests the exchange completion data keeping 
device 21 for mediation until the unit 11a receives a response 
5 thereto in a case where an ACK message received from the unit lib 
includes a public data ID of data requested by the unit 11a. 

FIG. 20 is a sequence diagram illustrating an operation of 
the unit 11a and the unit lib from when the unit 11a receives an 
ACK message from the exchange completion data keeping device 21 
10 until the unit 11a starts a data exchange with the unit lib. 

FIG. 21 is a sequence diagram illustrating an operation of 
the unit 11a and the exchange completion data keeping device 21 
from when the unit 11a terminates the communication session with 
the unit lib until the unit 11a receives an ACK message from the 
15 exchange completion data keeping device 21. 

FIG. 22 is a sequence diagram illustrating an operation of 
the unit 11a after receiving an ACK message from the exchange 
completion data keeping device 21. 

FIG. 23 is a sequence diagram illustrating an operation of 
20 the unit lib when the unit lib receives an EXCHANGE_DATA message 
from the unit 11a. 

FIG. 24 is a sequence diagram illustrating an operation of 
the exchange completion data keeping device 21 when the exchange 
completion data keeping device 21 receives a 
25 REGISTER_EXCHANGE_COMPLETION_DATA message from the unit 11a and 



from the unit lib. 

FIG. 25 is a sequence diagram illustrating an operation of 
the unit lib when the unit lib receives an INITIATE_EXCHANGE message 
from the unit 11a. 
5 FIG. 26 is a sequence diagram illustrating an operation of 

the exchange completion data keeping device 21 when the exchange 
completion data keeping device 21 receives an EXCHANGE_COMPLETED 
message from the unit 11a and from the unit lib. 

FIG. 27 is a flow chart illustrating an operation of the 
10 exchange completion data keeping device 21 until exchange 
completion data is deleted. 

FIG. 28 is a sequence diagram illustrating an operation of 
the unit 11a and the unit lib when the unit 11a requests the unit 
lib to resend data to be exchanged. 
15 FIG. 29 is a diagram illustrating an exemplary data structure 

of an exchange history stored in the unit 11. 

FIG. 30 is a flow chart illustrating an operation of the 
unit 11a when requesting the unit lib to exchange data. 

FIG. 31 is a flow chart illustrating an operation of the 
20 unit 11a when producing exchange completion data at an exchange 
completion data keeping device. 



BEST MODE FOR CARRYING OUT DETAILED DESCRIPTION OF THE INVENTION 
FIRST EMBODIMENT 

25 FIG. 1 is a block diagram illustrating a general 

21 



configuration of a unit-to-unit data exchange system Sa with a 
mediator server according to the first embodiment of the present 
invention. Referring to FIG. 1, the unit-to-unit data exchange 
system Sa with a mediator server includes a plurality of units 
5 11, an exchange completion data keeping device 21, a public data 
keeping device 31 and a channel 41. Note that it is assumed in 
FIG. 1 that a unit 11a and a unit lib are exchanging data with 
each other. Hereinafter, the designation "unit 11" will be used 
where the exchanging unit is not particularly specified, and the 

10 designation "unit 11a" or "unit lib" will be used where a particular 
exchanging unit is specified. Note that the numbers of the units 
11, the exchange completion data keeping devices 21, the public 
data keeping devices 31 and the channels 41 are not limited to 
those shown in FIG. 1. 

15 The unit 11 is a computer device having a communications 

function such as a personal computer, a portable communications 
terminal or a mobile phone, and is owned by an exchanging party. 
The unit 11 stores its data in a storage device such as a hard 
disk or a memory. The unit 11 makes public a list of exchangeable 

20 data from among all its stored data, by registering it at the public 
data keeping device 31. The user operating the unit 11 refers 
to the list of public data registered at the public data keeping 
device 31 to identify another unit 11 that has data of interest. 
If the user wishes to exchange data with the other unit 11, the 

25 user's unit 11 communicates with the other unit 11 to exchange 

22 



data owned by the user 1 s unit 11 with data owned by the other unit 
11. In a data exchange, the unit 11 converts data owned by the 
unit 11 through a predetermined conversion method into data that 
cannot be reproduced by itself, and transmits the converted data 
5 to the other unit 11. When exchanging data with the other unit 
11, the unit 11 produces data (hereinafter referred to as "exchange 
completion data") that is necessary for the exchanged data to be 
reproduced successfully after the completion of the data exchange, 
and transmits the exchange completion data to the exchange 

10 completion data keeping device 21, which keeps the exchange 
completion data. When the data exchange with the other party's 
unit 11 is completed successfully, the unit 11 receives exchange 
completion data produced by the other party's unit 11 and sent 
from the exchange completion data keeping device 2 1 , and reproduces 

15 the data obtained through the exchange by using the received 
exchange completion data. 

The exchange completion data will now be described. The 
exchange completion data is data that is necessary for successfully 
reproducing the data obtained from the other unit 11 through the 

20 data exchange. A typical example of the exchange completion data 
is a decryption key. Where a decryption key is used as the exchange 
completion data, the unit 11, exchanging data with the other unit 
11, uses an encryption algorithm as the predetermined conversion 
method, and encrypts its data before transmitting the data . After 

25 the data exchange is completed successfully, the unit 11 receives 



a decryption key produced by the other party's unit 11 and sent 
from the exchange completion data keeping device 21, and decrypts 
the exchanged data by using the received decryption key. Thus, 
the obtained data can be reproduced successfully. Hereinafter, 
5 the predetermined conversion method will be referred to as the 
data conversion method. 

Note that other examples of the exchange completion data 
include data of a climax portion of a film, data of a refrain portion 
of a musical tune, and data obtained by randomly or regularly 

10 thinning out the original data. Thus, where a portion of the 
original data is used as the exchange completion data, the unit 
11, reproducing the exchanged data, combines the obtained exchange 
completion data with the exchanged data to obtain data that can 
be reproduced successfully. Where a portion of the original data, 

15 being the data to be exchanged, is used as the exchange completion 
data, the predetermined conversion method may be a method of 
removing a portion of the original data. 

The exchange completion data keeping device 21 is a computer 
device such as a server, and is owned by an exchange mediator. 

20 The exchange completion data keeping device 21 keeps exchange 
completion data produced by various units 11. The exchange 
completion data keeping device 21 transmits exchange completion 
data that it keeps to both of the two units 11 exchanging data 
with each other if the exchange completion data keeping device 

25 21 is notified of successful completion of the data exchange between 

24 



the units 1 1 . 

The public data keeping device 31 is a computer device such 
as a server, and is owned by a public data keeper. The public 
data keeping device 31 keeps a public data list, i.e., a list of 
data that is registered by the users of the units 11 as being data 
that is allowed by the users to be exchanged. 

While the channel 41 is typicallya high-speed communications 
network using optical fibers such as FTTH, it is not limited thereto 
as long as it is a communications medium via which electronic data 
can be transmitted/received, such as ADSL, the Internet, satellite 
broadcasting, a wireless communications network, a premises LAN, 
or a wireless LAN. 

FIG. 2 is a block diagram illustrating a functional 
configuration of the inside of the unit 11. Referring to FIG. 
2, the unit 11 includes a data conversion section 111, a message 
handling section 112, a storage device controlling section 113, 
a data storage device 114, a user input/output section 115 and 
a data transmission/reception section 116. 

The data conversion section 111 uses a predetermined data 
conversion method to convert data sent from the message handling 
section 112 according to a specified request . The data conversion 
section 111 may be implemented by hardware such as a dedicated 
LSI or by a program that is run by a general-purpose CPU. 

The message handling section 112 communicates with the data 
conversion section 111, the storage device controlling section 



113, the user input/output section 115 and the data 
transmission/reception section 116, and handles messages 
therefrom. The message handling section 112 may be implemented 
by hardware such as a dedicated LSI or by a program that is run 
5 by a general-purpose CPU. 

The storage device controlling section 113 inputs /outputs 
data to/from the data storage device 114. The storage device 
controlling section 113 may be implemented by hardware such as 
a dedicated LSI or by a device driver of the data storage device 

10 114 that is run by a general-purpose CPU. 

The data storage device 114 is a storage device such as a 
hard disk or a memory for recording various data. The data storage 
device 114 stores data that may be made public. Each piece of 
data that may be made public is assigned a public data ID associated 

15 with the data ID of the data. Moreover, the public data ID is 
associated with information that describes the substantial 
contents of the data (hereinafter referred to as "contents 
information") . 

FIG. 3 is a diagram illustrating an exemplary data structure 
20 of data including data IDs and associated public data IDs. 
Referring to FIG. 3, in section D401, for example, the data ID 
"DATA_ID-1111" and the public data ID " PUBLIC_DATA_ID- 1 1 1 1 " are 
associated with each other. In section D402, the data ID 
"DATA_ID-2222" and the public data ID "PUBLIC_DATA_ID-222 2 " are 
25 recorded as being associated with each other. 



FIG. 4 is a diagram illustrating an exemplary data structure 
of data associated with the data IDs of FIG. 3. Referring to FIG. 
4, section D501, for example, represents the data ID and section 
D502 represents the substance of the data that is associated with 
5 the data ID in section D501. The substance of data refers to, 
for example, digital data of a film, a musical tune, etc. Thus, 
the substance of data associated with each data ID is stored in 
the data storage device 114. 

FIG. 5 is a diagram illustrating a data structure of public 

10 contents information associated with the public data IDs of FIG. 
3. Section D601 represents the public data ID, and section D602 
represents the public contents information that is associated with 
the public data IDinsectionD601. The public contents information 
includes, for example, the contents title and information 

15 indicating how much right to the contents is remaining (the 
remaining number of times the contents can be reproduced, and the 
expiration date thereof) . Note that FIG. 5 shows an example where 
the public contents information indicates "Contents title: The 
Blue City", "Remaining number of times of reproduction: 7" and 

20 "Expiration date: March 31, 2003". 

The unit 11 uploads a list of public data IDs and associated 
public contents information to the public data keeping device 31. 
The list is kept by the public data keeping device 31 as a public 
data list. 

25 The user input/output section 115 includes an input device, 

27 



such as a keyboard, a mouse, a button switch, etc., for receiving 
data inputs from the user operating the unit 11, a display device, 
such as a CRT, an LCD, etc., for displaying the contents of data, 
and a sound output device, such as a speaker, etc., for outputting 
5 the contents of data as sound. The user input/output section 115 
is responsible for a data input operation and a data output 
operation . 

The data transmission/reception section 116 is a 
communications device, such as data circuit- terminating equipment, 

10 etc., for transmitting/receiving data to/from the other unit 11, 
the exchange completion data keeping device 21 and the public data 
keeping device 31 via the channel 41. 

FIG. 6 is a block diagram illustrating a detailed functional 
configuration of the inside of the data conversion section 111. 

15 Referring to FIG. 6, the data conversion section 111 includes an 
unconverted data converting section 1111, an exchange completion 
data production section 1112, a converted data converting section 
1113 and a request determination section 1114. 

The unconverted data converting section 1111 converts data 

20 of the unit 11 based on a predetermined data conversion method. 
The data before being converted will hereinafter be referred to 
as unconverted data. The data^ after being converted^ will be 
referred to as converted data. The unconverted data converting 
section 1111 sends, to the message handling section 112, the 

25 exchange completion data sent from the exchange completion data 



production section 1112 and the converted data. 

For example, where an encryption method is used as the 
predetermined data conversion method, the unconverted data is 
unencrypted data and the converted data is encrypted data. Where 
a conversion method of removing a climax portion of a film is used 
as the predetermined data conversion method, the converted data 
is the data obtained by removing the climax portion . This similarly 
applies to a conversion method in which a refrain portion is taken 
out. Note that as the contents provider previously specifies the 
climax portion or the refrain portion, the unconverted data 
converting section 1111 can identify the portion. Where a method 
of thinning out data is used as the predetermined data conversion 
method, the unconverted data converting section 1111 produces the 
converted data by removing specified portions to be thinned out 
from the unconverted data. 

The exchange completion data production section 1112 
produces conversion process data that is necessary for the 
conversion from the unconverted data to the converted data, and 
exchange completion data that is necessary for restoring the 
unconverted data from the converted data, and sends these data 
to the unconverted data converting section 1111. Where an 
encryption method is used as the data conversion method at the 
unconverted data converting section 1111, the conversion process 
data is an encryption key for encrypting data. Then, the exchange 
completion data is decryption key data for decrypting the encrypted 



data . 

Where another method of removing a portion of data is used 
as the data conversion method, the conversion process data is data 
that specifies the portion to be taken out. Then, the exchange 
5 completion data is the taken-out portion of the data. Note that 
where a method of removing a portion of data is used as the data 
conversion method, the flow of the process performed between the 
exchange completion data production section 1112 and the 
unconverted data converting section 1111 is reversed from that 

10 shown in FIG. 6. In the following description, it is assumed for 
the sake of simplicity that an encryption method is used as the 
data conversion method unless otherwise specified. Even if other 
data conversion methods are used, the feature that the exchange 
completion data is produced and that the converted data can be 

15 reproduced successfully only by using the exchange completion data 
will not change substantially, and minor changes to the process 
flow can be made easily. 

The converted data converting section 1113 converts the 
converted data obtained from the other unit 11 to unconverted data 

20 by using the exchange completion data obtained from the exchange 
completion data keeping device 21, and sends the unconverted data 
to the message handling section 112. Specifically, where the 
exchange completion data is a decryption key, the converted data 
converting section 1113 decrypts the converted data, which has 

25 been encrypted, by using the exchange completion data to obtain 



the unconverted data. 

The request determination section 1114 determines the 
contents of the request sent from the message handling section 
112 to perform a predetermined process. If the received request 
5 is a request to convert unconverted data to converted data, the 
request determination section 1114 sends the unconverted data, 
which has been received together with the request, to the exchange 
completion data production section 1112 . If the received request 
is a request to convert converted data to unconverted data, the 

10 request determination section 1114 sends the converted data and 
the exchange completion data, which have been received together 
with the request, to the converted data converting section 1113. 

FIG. 7 is a block diagram illustrating a functional 
configuration of the inside of the exchange completion data keeping 

15 device 21. Referring to FIG. 7, the exchange completion data 
keeping device 21 includes an exchange completion data transmission 
determination section 211, a message handling section 212, a 
storage device controlling section 213, a data storage device 214 
and a data transmission/reception section 215. 

20 The exchange completion data transmission determination 

section 211 produces a determination table including unit IDs and 
associated exchange completion data sent from the units 11, and 
registers, in the determination table, information indicating 
whether or not there has been a notification from the unit 11 that 

25 the data exchange has been completed successfully. Based on the 



registered information, the exchange completion data transmission 
determination section 211 determines whether or not to transmit 
the exchange completion data to the unit 11. Specifically, the 
exchange completion data transmission determination section 211 
5 determines that exchange completion data can be transmitted to 
the units 11a and lib only when it receives a notification that 
the data exchange has been completed successfully both from the 
unit 11a and from the unit lib. The exchange completion data 
transmission determination section 211 may be implemented by 

10 hardware such as a dedicated LSI or by a program that is run by 
a general-purpose CPU. 

The message handling section 212 communicates with the 
exchange completion data transmission determination section 211, 
the storage device controlling section 213 and the data 

15 transmission/reception section 215, and handles messages 
therefrom. The message handling section 212 may be implemented 
by hardware such as a dedicated LSI or by a program that is run 
by a general-purpose CPU. 

The storage device controlling section 213 inputs/outputs 

20 data to/from the data storage device 214. The storage device 
controlling section 213 may be implemented by hardware such as 
a dedicated LSI or by a device driver of the data storage device 
214 that is run by a general-purpose CPU. 

The data storage device 214 is a storage device such as a 

25 hard disk or a memory for recording various data . The data storage 



device 214 stores exchange completion data sent from the unit 11, 
together with the determination table used for determining whether 
or not to transmit the exchange completion data . The determination 
table includes the ID (hereinafter referred to as the "unit ID") 
5 of the unit 11 that has transmitted the exchange completion data 
and that is associated with the ID (hereinafter referred to as 
the "exchange completion data ID" ) of the exchange completion data, 
and a completion notification flag indicating whether or not there 
has been a notification from the unit 11 associated with the unit 

10 ID that the data exchange has been completed successfully. 

FIG. 8 is a diagram illustrating an exemplary data structure 
of the determination table . Referring to FIG . 8, in a determination 
table D901 whose determination table ID is " JUDGE_TABLE_ID-1111", 
for example, section D902 includes the unit ID "CLIENT_ID-1111", 

15 the exchange completion data ID "END_DATA_ID- 1111" and the 
completion notification flag "OFF" being associated with one 
another, and section D903 includes the unit ID "CLIENT_ID-2222 " , 
the exchange completion data ID "END_DATA_ID-2222 " and the 
completion notification flag "OFF" being associated with one 

20 another. The completion notification flag is turned "ON" if there 
is a notification that the reception of data being exchanged has 
been completed successfully from the other party's unit, and is 
turned "OFF" if there is a notification that the reception of data 
being exchanged cannot be completed due to a certain abnormality 

25 occurring during the data exchange . Thus, the determination table 



is used to keep exchange completion data so that it is possible 
to specify the unit from which the exchange completion data has 
been transmitted. 

FIG. 9 is a diagram illustrating an exemplary data structure 
5 of exchange completion data associated with exchange completion 
data IDs of FIG. 8. Referring to FIG. 9, section D1001 represents 
the exchange completion data ID, and section D1002 represents the 
substance of the exchange completion data associated with the 
exchange completion data ID in section D1001. The substance of 

10 exchange completion data herein refers to the contents of the 
exchange completion data sent from the unit 11. Thus, the data 
storage device 214 stores the exchange completion data together 
with the determination table. 

The data transmission/reception section 215 is a 

15 communications device for transmitting/ receiving data to/from the 
unit 11 and the public data keeping device 31 via the channel 41. 

FIG. lOisablock diagram illustrating a detailed functional 
configuration of the inside of the exchange completion data 
transmission determination section 211. Referring to FIG. 10, 

20 the exchange completion data transmission determination section 
211 includes a determination table referencing section 2111, a 
determination table production section 2112 and a request 
determination section 2113. 

The request determination section 2113 determines the 

25 contents of the request sent from the message handling section 



212 to perform a predetermined process. If the received request 
is a request to register exchange completion data, the request 
determination section 2113 sends the unit IDs of the receiving 
unit and the offering unit and the exchange completion data IDs 
5 from both of the units to the determination table production section 

2112, and requests the determination table production section 2112 
to produce a determination table. If the received request is a 
request to determine whether or not to transmit the exchange 
completion data based on a notification of data exchange completion 

10 from the unit 11, the request determination section 2113 sends, 
to the determination table referencing section 2111, the unit ID 
of the unit 11 that has given the completion notification, the 
determination table ID associated with the unit ID, and the 
completion notification information included in the completion 

15 notification, and requests the determination table referencing 
section 2111 to determine whether or not to transmit the exchange 
completion data. 

Based on the data from the request determination section 

2113, the determination table production section 2112 produces 
20 and stores a determination table in the data storage device 214, 

and sends the ID of the determination table to the message handling 
section 212. Note that the path_^ via which the determination table 
production section 2112 stores the determination table in the data 
storage device 214_^_ is not shown in the figure. 
25 Based on the data from the request determination section 



2113, the determination table referencing section 2111 references 
the determination table stored in the data storage device 214 to 
determine whether or not to transmit the exchange completion data. 
Specifically, only if the completion notification flags in the 
5 determination table are both "OK", i.e., only if a notification 
of the successful completion of the data exchange has been received 
from both of the two units 11 exchanging data, the determination 
table referencing section 2111 determines that the exchange 
completion data can be transmitted. If it is determined that the 
10 exchange completion data can be transmitted, the determination 
table referencing section 2111 sends the unit ID of each receiving 
unit 11 and the exchange completion data ID to the message handling 
section 212. 

FIG. 11 is a block diagram illustrating a functional 
15 configuration of the inside of the public data keeping device 31. 
Referring to FIG. 11, the public data keeping device 31 includes 
a message handling section 311, a storage device controlling 
section 312, a data storage device 313 and a data 
transmission/reception section 314 . 
20 The message handling section 311 communicates with the 

storage device controlling section 312 and the data 
transmission/reception section 314, and handles messages 
therefrom. The message handling section 311 may be implemented 
by hardware such as a dedicated LSI or by a program that is run 
25 by a general-purpose CPU. 



The storage device controlling section 312 inputs /outputs 
data to/from the data storage device 313. The storage device 
controlling section 312 may be implemented by hardware such as 
a dedicated LSI or by a device driver of the data storage device 
5 313 that is run by a general-purpose CPU. 

The data transmission/reception section 314 is a 
communications device for transmitting/ receiving data to/from the 
unit 11 and the exchange completion data keeping device 21 via 
the channel 41. 

10 The data storage device 313 is a storage device such as a 

hard disk or a memory for recording various data . The data storage 
device 313 stores a public data list . The public data list includes 
public data IDs and unit IDs of the units 11 registering the public 
data (hereinafter referred to as the "registering unit IDs " ) . Each 

15 public data ID is associated with contents information. 

FIG. 12 is a diagram illustrating an exemplary data structure 
of public data list. Referring to FIG. 12, for example, section 
D1201 includes the registering unit ID "CLIENT_ID-1111" and the 
public data ID " PUBLIC_DATA_ID- 1 1 1 1 " associated with each other, 

2 0 and section Dl 2 02 includes the regis tering unit ID "CLIENT_ID-2 2 22 " 
and the public data ID "PUBLIC_DATA_ID-2222 " associated with each 
other . 

FIG. 13 is a diagram illustrating an exemplary data structure 
of contents information associated with public data IDs of FIG. 
25 12. Referring to FIG. 13, section D1301 represents the public 



data ID. Section D1302 represents the contents information 
associated with the public data ID in section D1301. Note that 
the contents information in FIG. 13 indicates "contents title: 
The Blue City", "Remaining number of times of reproduction: 7" 
5 and "Expiration date: March 31, 2003". 

Now, the flow of the process in the unit-to-unit data exchange 
system Sa having such a configuration as described above will be 
described. The process in the present system can be divided into 
three stages. The first stage is where the unit 11 registers its 

10 public data at the public data keeping device 31 . The second stage 
is where the unit 11a obtains, from the public data keeping device 
31, a unit ID that is associated with the public data ID specified 
by the user. The third stage is where the unit 11a exchanges data 
with the unit lib through the mediation of the exchange completion 

15 data keeping device 21. Now, an operation of the unit 11, the 
exchange completion data keeping device 21 and the public data 
keeping device 31 will be described stage by stage. 
SEQUENCE IN PUBLIC DATA REGISTERING STAGE 

First, referring to FIG. 14 and FIG. 15, an operation of 
20 the unit 11 and the public data keeping device 31 in the stage 
where the unit 11 registers its public data at the public data 
keeping device 31 will be described. 

FIG. 14 is a sequence diagram illustrating an operation of 
the unit 11 and the public data keeping device 31 when the unit 
25 11 registers the contents information on its public data at the 



public data keeping device 31. In FIG. 14, the point in time at 
which each step is performed is denoted by an open rectangle while 
data, or the like, that is being exchanged is specified above a 
corresponding arrow extending between functional blocks so as to 
5 make clear what is the subject of the operation in the unit 11 
and what data or message is being exchanged between functional 
blocks. A software functional block can be implemented by a 
function that is programmed to go along the flow as illustrated 
in the sequence diagram. A hardware functional block can be 

10 implemented by designing the hardware so that it goes along the 
flow as illustrated in the sequence diagram. This similarly 
applies to the other sequence diagrams subsequent to FIG. 14. 

First, in response to an input operation by the user, the 
user input/output section 115 of the unit 11 obtains the data ID 

15 of the data that the user is requesting to be registered, notifies 
the message handling section 112 of the obtained data ID, and 
requests the message handling section 112 to register the public 
data (step S1401) . 

Then, in response to the public data registration request, 

20 the message handling section 112 obtains the data ID included in 
the request, notifies the storage device controlling section 113 
of the data ID, and requests the storage device controlling section 
113 to obtain the public data from the data storage device 114 
(step S1402) . 

25 Then, in response to the public data obtaining request, the 



storage device controlling section 113 obtains the data ID included 
in the request, obtains the public data ID associated with the 
data ID and the contents information of the public data from the 
data storage device 114, and transmits the obtained public data 
5 ID and the contents information to the message handling section 
112 (step S1403) . 

Then, receiving the public data ID and the contents 
information, the message handling section 112 produces a 
REGI STER_PUBLIC_DATA message including the public data ID, the 

10 contents information and the unit ID of the unit 11, and transmits 
the message to the data transmission/reception section 116 (step 
S1404) . Receiving the REGI STER_PUBLIC_DATA message, the data 
transmission/reception section 116 transmits the message to the 
public data keeping device 31 (step S1405) . 

15 Receiving the REGI STER_PUBLIC_DATA message from the unit 

11, the public data keeping device 31 produces a public data list 
based on the public data ID and the unit ID included in the message, 
stores the associated contents information, and transmits, to the 
unit 11, an ACK message indicating the result of the data 

20 registration process (step S1406). 

Receiving the ACK message from the public data keeping device 
31, the data transmission/reception section 116 transmits the 
message to the message handling section 112 (step S1407). 

Receiving the ACK message, the message handling section 112 

25 transmits the registration result information included in the 



message to the user input/output section 115 (step S1408). In 

response to this, the user input/output section 115 notifies the 

user of the registration result information by displaying it on 

the screen, etc. (step S1409). 
5 FIG. 15 is a sequence diagram illustrating an operation of 

the public data keeping device 31 and the unit 11 when the public 

data keeping device 31 receives a REGI STER_PUBLIC_DATA message. 

In FIG. 15, the same operations as those shown in FIG. 14 will 

be denoted by the same step numbers and will not be further described 
10 below. Note that the sequence diagram of FIG. 15 shows, in greater 

detail, the operation of the public data keeping device 31 in step 

S1406 of FIG. 14. 

First, the data transmission/reception section 314 of the 

public data keeping device 31 receives the REGI STER_PUBLIC_DATA 
15 message from the unit 11, and transmits the message to the message 

handling section 311 (step S1501). 

Then, receiving the REGI STER_PUBLIC_DATA message, the 

message handling section 311 extracts the public data ID, the 

contents information and the unit ID from the message, and transmits 
20 a public data registration request including the extracted 

information to the storage device controlling section 312 (step 

S1502) . 

Receiving the public data registration request, the storage 
device controlling section 312 produces a public data list in which 
25 the public data ID and the contents information included in the 

41 



request are associated with each other and the public data ID and 
the unit ID are associated with each other, stores the produced 
list in the data storage device 313, and transmits the registration 
result to the message handling section 311 (step S1503) . 
5 Receiving the registration result, the message handling 

section 311 transmits an ACK message including the registration 
result information to the data transmission/reception section 314 
(step S1504). Receiving the ACK message, the data 

transmission/reception section 314 transmits the message to the 
10 unit 11 (step S1505) . 

SEQUENCE IN UNIT ID OBTAINING STAGE 

Now, referring to FIG. 16 and FIG. 17, an operation of the 
unit 11a and the public data keeping device 31 in the stage where 
the unit 11a obtains, from the public data keeping device 31, a 

15 unit ID that is associated with the public data ID specified by 
the user will be described. 

FIG. 16 is a sequence diagram illustrating an operation of 
the unit 11a when obtaining the unit ID. First, the user 
input/output section 115 of the unit 11a obtains the public data 

20 ID of the requested data specified by an input from the user, and 
transmits a request to obtain a registering unit ID, including 
the public data ID, to the message handling section 1 12 (stepS1601) . 
It is assumed herein that the public data ID can be obtained from 
the public data list, etc. , made public at the public data keeping 

25 device 31 . It is assumed herein that the unit 11a obtains a public 

42 



data ID registered by the unit lib. 

Then, receiving the request to obtain a registering unit 
ID, the message handling section 112 obtains the public data ID 
included in the request, produces an OBTAIN_REGISTERING_UNIT_ID 
5 message including the obtained public data ID, and transmits the 
produced message to the data transmission/reception section 116 
(step S1602) . 

Receiving the OBTAIN_REGISTERING_UNIT_ID message, the data 
transmission/reception section 116 transmits the message to the 

10 public data keeping device 31 (step S1603). 

Receiving the OBTAIN_REGISTERING_UNIT_ID message from the 
unit 11a, the public data keeping device 31 obtains a registering 
unit ID that is associated with the public data ID included in 
the message (the unit ID of the unit 1 lb in the illustrated example) , 

15 and transmits an ACK message including the registering unit ID 
to the unit 11a (step S1604) . 

Receiving the ACK message from the public data keeping device 
31, the data transmission/reception section 116 transmits the 
message to the message handling section 112 (step S1605). 

20 Receiving the ACK message, the message handling section 112 
extracts the registering unit ID from the message, and transmits 
the registering unit ID to the user input/output section 115 (step 
S1606). The user input/output section 115 uses the received 
registering unit ID for identifying the unit with which to exchange 

25 data. 



FIG. 17 is a sequence diagram illustrating an operation of 
the public data keeping device 31 and the unit 11a when the public 
data keeping device 31 receives an OBTAIN_REGISTERING_UNIT_ID 
message. In FIG. 17, the same operations as those shown in FIG. 
5 16 will be denoted by the same step numbers and will not be further 
described below. Note that the sequence diagram of FIG. 17 shows, 
in greater detail, the operation of the public data keeping device 
31 in step S1604 of FIG. 16. 

First, the data transmission/reception section 314 of the 
10 public data keeping device 31 receives an 

OBTAIN_REGISTERING_UNIT_ID message from the unit 11a, and 
transmits the message to the message handling section 311 (step 
S1701) . 

Receiving the OBTAIN_REGISTERING_UNIT_ID message, the 
15 message handling section 311 extracts the public data ID from the 
message, and transmits a request to obtain a registering unit ID, 
including the extracted ID, to the storage device controlling 
section 312 (step S1702) . 

Receiving the request to obtain a registering unit ID, the 
20 storage device controlling section 312 obtains a registering unit 
ID that is associated with the public data ID included in the request 
from the data storage device 313, and transmits the registering 
unit ID to the message handling section 311 (step S1703) . 

Receiving the registering unit ID, the message handling 
25 section 311 produces an ACK message including the registering unit 

44 



ID, and transmits the ACK message to the data 
transmission/reception section 314 (step S1704). 

Receiving the ACK message, the data transmission/reception 
section 314 transmits the message to the unit 11a (step S1705) . 
5 SEQUENCE IN DATA EXCHANGE STAGE 

Now, referring to FIG. 18 to FIG. 26, the sequence in the 
stage where the two units 11a and lib exchange data therebetween 
through the mediation of the exchange completion data keeping 
device 21 will be described. 

10 FIG. 18 is a sequence diagram illustrating an operation of 

the unit 11a and the unit lib from when the unit 11a requests the 
unit lib to exchange data until the unit 11a receives a response 
thereto. First, the user input/output section 115 of the unit 
11a obtains the public data ID of the data requested by the user 

15 and the unit ID of the unit to which the requested data belongs 
(the unit ID of the unit that has registered the public data ID 
at the public data keeping device 31) , and transmits a data exchange 
request including the two IDs to the message handling section 112 
(step S1801) . The process of obtaining the public data ID and 

20 the unit ID has been described above with reference to FIG. 16 
and FIG. 17. 

Receiving the data exchange request, the message handling 
section 112 transmits, to the storage device controlling section 
113, a public data obtaining request to obtain the public data 
25 IDs of all the data that the unit 11a has registered at the public 



data keeping device 31 and all the contents information associated 
with the public data IDs from the data storage device 114 (step 
S1802) . 

Then, receiving the public data obtaining request, the 
5 storage device controlling section 113 obtains the public data 
IDs of all the data that the unit 11a has registered at the public 
data keeping device 31 and the associated contents information 
from the data storage device 114, and transmits the obtained 
information to the message handling section 112 (step S1803) . 

10 Then, the message handling section 112 receives the public 

data IDs and the contents information, and transmits, to the data 
transmission/reception section 116, an EXCHANGE_DATA message 
including the received information together with the unit ID and 
the public data ID obtained in step S1801 (step S1804) . 

15 Inresponseto this , the data transmission/ reception section 

116 transmits the received EXCHANGE_DATA message to the unit lib 
(step S1805) . 

Receiving the EXCHANGE_DATA message from the unit 11a, the 
unit lib selects the public data ID of the data requested by the 

20 user from the message, and transmits an ACK message including the 
selected public data ID to the unit 11a, according to the operation 
shown in FIG. 23 to be described below (step S1806) . Note however 
that if the unit lib does not have the data requested by the user, 
the unit lib transmits an ACK message indicating the absence of 

25 the requested data. 



Receiving the ACK message from the unit lib, the data 
transmission/reception section 116 transmits the message to the 
message handling section 112 (step S1807). 

FIG. 19 is a sequence diagram illustrating an operation of 
5 the unit 11a and the exchange completion data keeping device 21 
from when the unit 11a requests the exchange completion data keeping 
device 21 for mediation until the unit 11a receives a response 
thereto in a case where an ACK message received from the unit lib 
includes a public data ID of data requested by the unit 11a. In 
10 FIG. 19, the same operations as those shown in FIG. 18 will be 
denoted by the same step numbers and will not be further described 
below . 

The message handling section 112 receives an ACK message, 
and determines whether or not the exchanged data ID is included 

15 in the ACK message . If it is included, the message handling section 
112 transmits an exchanged data obtaining request including the 
exchanged data ID to the storage device controlling section 113 
(step S1808) . If it is not included, the message handling section 
112 transmits information indicating the absence thereof to the 

20 user input/output section 115. In response to this, the user 
input/output section 115 notifies the user that the data exchange 
has been refused by the unit lib. 

Next, receiving the exchanged data obtaining request, the 
storage device controlling section 113 references the data storage 

25 device 114 to obtain the data ID associated with the exchanged 



data ID included in the request and obtain data that is associated 
with the data ID, and transmits the obtained data (hereinafter 
referred to as the "exchanged data" ) to the message handling section 
112 (step S1809) . 
5 Receiving the exchanged data, the message handling section 

112 transmits the exchanged data to the data conversion section 
111, and issues a request to convert the exchanged data to obtain 
converted data (hereinafter referred to as the "data conversion 
request") (step S1810) . 

10 Receiving the data conversion request, the data conversion 

section 111 converts the unconverted data included in the request 
to produce the converted data and the exchange completion data, 
and transmits the converted data and the exchange completion data 
to the message handling section 112 (step S1811). 

15 Then, receiving the converted data and the exchange 

completion data, the message handling section 112 produces a 
REG I S TER_EXCHANGE_COMPLE T I ON_DAT A me s s age including the exchange 
completion data and the unit ID, and transmits the produced message 
to the data transmission/reception section 116 (step S1812). 

20 Receiving the REGI STER_EXCHANGE_COMPLET ION_DATA message, 

the data transmission/reception section 116 transmits the message 
to the exchange completion data keeping device 21 (step S1813) . 

Note that although the operation of the unit lib will not 
be described herein, the unit lib performs a similar operation 

25 to that of the unit 11a to transmit exchange completion data to 



the exchange completion data keeping device 21. 

Receiving the REGI STER_EXCHANGE_COMPLETION_DATA message 
from the unit 11a and from the unit lib, the exchange completion 
data keeping device 21 produces a determination table and stores 
5 therein the exchange completion data included in the received 
message, and then transmits an ACK message including the 
determination table ID to the unit 11a and the unit lib, according 
to the operation shown in FIG. 24 to be described below (step SI 8 14) . 

Then, receiving the ACK message from the exchange completion 
10 data keeping device 21, the data transmission/reception section 
116 of the unit 11a transmits the message to the message handling 
section 112 (step S1815) . 

FIG. 20 is a sequence diagram illustrating an operation of 
the unit 11a and the unit lib from when the unit 11a receives an 
15 ACK message from the exchange completion data keeping device 21 
until the unit 11a starts a data exchange with the unit lib. In 
FIG. 20, the same operations as those shown in FIG. 19 will be 
denoted by the same step numbers and will not be further described 
below . 

20 First, receiving the ACK message, the message handling 

section 112 of the unit 11a transmits an INITIATE_EXCHANGE message 
to the data transmission/reception section 116 (step S1816). 

Then, receiving the INITIATE_EXCHANGE message, the data 
transmission/reception section 116 transmits the message to the 

25 unit lib (step S1817) . 



Receiving the INITIATE_EXCHANGE message from the unit 11a, 
the unit lib produces an ACK message and transmits the message 
to the unit 11a, according to the operation shown in FIG. 25 to 
be described below (step S1818). 
5 Receiving the ACK message from the unit lib, the data 

transmission/reception section 116 of the unit 11a transmits the 
message to the message handling section 112 (step S1819). 

Then, the data exchange is initiated between the unit 11a 
and the unit lib (step S1820) . The communications method used 

10 for the data exchange may be a method well known in the art such 
as a packet-based communications method. 

FIG. 21 is a sequence diagram illustrating an operation of 
the unit 11a and the exchange completion data keeping device 21 
from when the unit 11a terminates the communication session with 

15 the unit lib until the unit 11a receives an ACK message from the 
exchange completion data keeping device 21. In FIG. 21, the same 
operations as those shown in FIG. 20 will be denoted by the same 
step numbers and will not be further described below. 

First, when the communication session with the unit lib is 

20 terminated, the message handling section 112 determines whether 
or not the exchanged data of interest has been obtained successfully 
from the unit lib (step S1821a) . The determination of whether 
or not each unit has obtained data successfully can be made as 
follows. The units 11a and lib may previously exchange sizes of 

25 data to be transmitted to each other, and each unit can determine 



that the exchanged data could not be received successfully if the 
size of the received data is smaller than the scheduled data size. 

If the data has been obtained successfully, the message 
handling section 112 produces an EXCHANGE_COMPLETED message 
5 including information that indicates the completion of the exchange 
(hereinafter referred to as the "OK information") and the 
determination table ID (step S1821b) . If the data has not been 
obtained successfully, the message handling section 112 produces 
an EXCHANGE_COMPLETED message including information that 

10 indicates the failure of the exchange (hereinafter referred to 
as the "NG information") and the determination table ID (step 
S1821c) . Then, the message handling section 112 transmits the 
produced EXCHANGE_COMPLETED message to the data 
transmission/reception section 116 (step S1821d). 

15 Receiving the EXCHANGE_COMPLETED message, the data 

transmission/reception section 116 transmits the message to the 
exchange completion data keeping device 21 (step S1822) . Note 
that although the operation of the unit lib will not be described 
herein, the unit lib performs a similar operation to that of the 

20 unit 11a to transmit an EXCHANGE_COMPLETED message to the exchange 
completion data keeping device 21. 

Receiving the EXCHANGE_COMPLETED message from the unit 11a 
and from the unit lib, the exchange completion data keeping device 
21 determines whether or not to send exchange completion data needed 

25 by the unit 11a and exchange completion data needed by the unit 



lib to the unit 11a and the unit lib, respectively, based on the 
determination table, according to the operation shown in FIG. 26 
to be described below. If it is determined that the exchange 
completion data is to be transmitted, the exchange completion data 
5 keeping device 21 transmits an ACK message including the exchange 
completion data to the unit 11a and the unit lib. Ifitis determined 
that the exchange completion data is not to be transmitted, the 
exchange completion data keeping device 2 1 transmits an ACK message 
that does not include the exchange completion data to the unit 

10 11a and the unit lib (step S1823) . The determination of whether 
or not to transmit the exchange completion data will be described 
below in detail with reference to FIG. 26. 

The data transmission/reception section 116 transmits the 
ACK message from the exchange completion data keeping device 21 

15 to the message handling section 112 (step S1824a) . 

FIG. 22 is a sequence diagram illustrating an operation of 
the unit 11a after receiving the ACK message from the exchange 
completion data keeping device 2 1 . In FIG. 22, the same operations 
as those shown in FIG. 21 will be denoted by the same step numbers 

20 and will not be further described below. 

First, the message handling section 112 analyzes the ACK 
message from the exchange completion data keeping device 21 to 
determine whether or not exchange completion data is included 
therein (step S1825a) . If it is not included, the message handling 

25 section 112 transmits information indicating the absence thereof 



to the user input/output section 115. Then, since the exchange 
completion data could not be obtained, the message handling section 
112 notifies the user that the exchanged data cannot be reproduced 
(step S1825b) . 

5 If it is included, the message handling section 112 extracts 

the exchange completion data, and transmits a data conversion 
request including the exchange completion data and the converted 
data obtained from the unit lib to the data conversion section 

111 (step S1825c) . 

10 Receiving the data conversion request, the data conversion 

section 111 produces unconverted data based on the exchange 
completion data and the converted data included in the request, 
and transmits the unconverted data to the message handling section 

112 (step S1826) . 

15 Then, receiving the unconverted data, the message handling 

section 112 transmits a data registration request including the 
unconverted data to the storage device controlling section 113 
(step S1827). Receiving the data registration request, the 
storage device controlling section 113 extracts data included in 

20 the request, newly assigns a data ID to the extracted data, registers 
the extracted data at the data storage device 114, and transmits 
information indicating the registration result to the message 
handling section 112 (step S1828). 

Then, receiving the information indicating the registration 

25 result, the message handling section 112 transmits information 



indicating the completion of the exchange to the user input/output 
section 115 (step S1829) . Finally, the user input/output section 
115 notifies the user of the completion of the data exchange (step 
S1830) . 

5 FIG. 23 is a sequence diagram illustrating an operation of 

the unit lib when the unit lib receives an EXCHANGE_DATA message 
from the unit 11a. In FIG. 23, the same operations as those shown 
in FIG. 18 will be denoted by the same step numbers and will not 
be further described below. FIG. 23 shows, in greater detail, 

10 the operation of the unit lib in step S1806 of FIG. 18. 

Receiving the EXCHANGE_DATA message from the unit 11a, the 
data transmission/reception section 116 of the unit lib transmits 
the message to the message handling section 112 (step S1901). 

Then, receiving the EXCHANGE_DATA message, the message 

15 handling section 112 extracts all the public data IDs and the 
associated contents information from the message, and transmits 
a data selection request including the extracted information to 
the user input/output section 115 (step S1902). 

Receiving the data selection request, the user input/output 

20 section 115 presents all the public data IDs and the associated 
contents information in the request to the user, and allows the 
user to select data of interest to the user. In response to this, 
the user selects data of interest from among the presented public 
data. If there is no particular data of interest to the user, 

25 the user makes a selection indicating the absence of data of interest. 



The user input/output section 115 transmits the public data ID 
that is associated with the public data selected by the user to 
the message handling section 112 (step S1903) . Note that if no 
particular data of interest is selected, the user input/output 
5 section 115 transmits information indicating the absence of data 
of interest to the message handling section 112 in place of the 
public data ID. 

Receiving the public data ID or the information indicating 
that no data has been selected, the message handling section 112 

10 transmits an ACK message including such information to the data 
transmission/reception section 116 (step S1904) . Receiving the 
ACK mess age, the data transmission/ reception section 116 transmits 
the message to the unit 11a (step S1905). 

FIG. 24 is a sequence diagram illustrating an operation of 

15 the exchange completion data keeping device 21 when the exchange 
completion data keeping device 21 receives a 
REGI STER_EXCHANGE_COMPLET ION_DATA message from the unit 11a and 
from the unit lib. In FIG. 24, the same operations as those shown 
in FIG. 19 will be denoted by the same step numbers and will not 

20 be further described below. FIG. 24 shows, in greater detail, 
the operation of the exchange completion data keeping device 21 
in step S1814 of FIG. 19. 

Receiving the REGI STER_EXCHANGE_COMPLETION_DATA message 
from the unit 11a and from the unit lib, the data 

25 transmission/ reception section 215 of the exchange completion data 

55 



keeping device 21 transmits the message to the message handling 
section 212 (step S2001) . 

Receiving the REGI STER_EXCHANGE_COMPLET ION_DATA message, 
the message handling section 212 transmits, to the exchange 
5 completion data transmission determination section 211, a request 
to produce a determination table including the exchange completion 
data ID and the unit ID included in the message (step S2002) . 

Receiving the determination table production request, the 
exchange completion data transmission determination section 211 
10 produces a determination table in which the unit ID and the exchange 
completion data ID included in the request are associated with 
each other, and transmits the determination table ID of the 
determination table to the message handling section 212 (step 
S2003) . 

15 Receiving the determination table ID, the message handling 

section 212 extracts the exchange completion data and the exchange 
completion data ID from the REGI STER_EXCHANGE_COMPLET ION_DATA 
message received from the unit 11a and from the unit lib, and 
transmits an exchange completion data registration request 

20 including the extracted information to the storage device 
controlling section 213 (step S2004). 

Then, receiving the exchange completion data registration 
request, the storage device controlling section 213 stores the 
exchange completion data and the exchange completion data ID 

25 included in the request in the data storage device 214 so that 



they are associated with each other, and transmits information 
indicating the registration result to the message handling section 
212 (step S2005) . 

Receiving the information indicating the registration 
5 result, the message handling section 212 transmits an ACK message 
including the determination table ID to the data 
transmission/reception section 215 (step S2006) . Receiving the 
ACK mess age, the data transmission/ reception section 215 transmits 
the message to the unit 11a and the unit lib (step S2007) . 

10 FIG. 25 is a sequence diagram illustrating an operation of 

the unit lib when the unit lib receives an INI T I ATE_EXCHANGE message 
from the unit 11a. In FIG. 25, the same operations as those shown 
in FIG. 20 will be denoted by the same step numbers and will not 
be further described below. FIG. 25 shows, in greater detail, 

15 the operation of the unit lib in step S1818 of FIG. 20. 

Receiving the INITIATE_EXCHANGE message from the unit 11a, 
the data transmission/reception section 116 of the unit lib 
transmits the message to the message handling section 112 (step 

52101) . Receiving the INITIATE_EXCHANGE message, the message 
20 handling section 112 checks what are being exchanged, and transmits 

an ACK message to the data transmission /reception section 116 (step 

52102) . Receiving the ACK message, the data 
transmission/reception section 116 transmits the message to the 
unit 11a (step S2103) . 

25 FIG. 26 is a sequence diagram illustrating an operation of 



the exchange completion data keeping device 21 when the exchange 
completion data keeping device 21 receives an EXCHANGE_COMPLETED 
message from the unit 11a and from the unit lib. In FIG. 26, the 
same operations as those shown in FIG. 21 will be denoted by the 
5 same step numbers and will not be further described below. FIG. 
26 shows, in greater detail, the operation of the exchange 
completion data keeping device 21 in step S1823 of FIG. 21. 

Receiving the EXCHANGE_COMPLETED message from the unit 11a 
and from the unit lib, the data transmission/reception section 

10 215 of the exchange completion data keeping device 21 transmits 
the message to the message handling section 212 (step S2201). 

Receiving the EXCHANGE_COMPLETED message from the unit 11a 
and from the unit lib, the message handling section 212 extracts, 
from each of the messages , the determination table ID, the exchange 

15 completion information (the OK information indicating completion 
of the exchange or the NG information indicating failure of the 
exchange) and the unit ID, registers the extracted information 
in the determination table, and requests the exchange completion 
data transmission determination section 211 to determine whether 

20 or not to transmit the exchange completion data to the units 11a 
and lib while specifying a determination table ID of the 
determination table (step S2202). 

Receiving the request to determine whether or not to transmit 
the exchange completion data, the exchange completion data 

25 transmission determination section 211 references the 



determination table associated with the determination table ID 
included in the request to determine whether or not the OK 
information is registered in both of the completion notification 
flags of the unit IDs of the unit 11a and the unit lib (step S2203a) . 
5 If the OK information is registered for both units, the exchange 
completion data transmission determination section 211 transmits 
the unit IDs and the associated exchange completion data ID to 
the message handling section 212 and requests the message handling 
section 212 to transmit the exchange completion data associated 

10 with the unit ID of the unit lib to the unit 11a and to transmit 
the exchange completion data associated with the unit ID of the 
unit 11a to the unit lib (step S2203b) . If the NG information 
is registered for either unit in the determination table, the 
exchange completion data transmission determination section 211 

15 transmits, to the message handling section 212, information 
indicating that the exchange completion data cannot be transmitted, 
and the message handling section 212 in response transmits, to 
the unit 11a and the unit lib, an ACK message that indicates that 
the exchange completion data cannot be obtained (steps S2203c and 

20 S2203d) . 

Receiving the unit ID and the exchange completion data ID, 
the message handling section 212 transmits the exchange completion 
data ID to the storage device controlling section 213 and requests 
the storage device controlling section 213 to obtain the associated 
25 exchange completion data from the data storage device 214 



(hereinafter referred to as the "exchange completion data obtaining 
request") (step S2204) . 

Receiving the exchange completion data obtaining request, 
the storage device controlling section 213 obtains exchange 
5 completion data that is associated with the exchange completion 
data ID included in the request from the data storage device 214, 
and transmits the obtained exchange completion data to the message 
handling section 212 (step S2205) . 

Receiving the exchange completion data, the message handling 

10 section 212 transmits, to the data transmission/reception section 
215, ACK messages each including the exchange completion data such 
that the exchange completion data associated with the unit ID of 
the unit lib is transmitted to the unit 11a and the exchange 
completion data associated with the unit ID of the unit 11a is 

15 transmitted to the unit lib (step S2206). Receiving the ACK 
messages, the data transmission/reception section 215 transmits 
one of the messages to the unit 11a and the other to the unit lib 
as specified (step S2207). 

Thus, in the first embodiment, the data to be exchanged 

20 between units will not themselves be uploaded to the exchange 
completion data keeping device, but only those — the data (the 
exchange completion data) that arc is necessary for completing 
the data exchange arc is uploaded to the exchange completion data 
keeping device. This reduces the problem that the communications 

25 cost and the load on the mediator server increase in proportion 



to the amount of data exchanged between units. In addition, two 
units exchanging data with each other can obtain the exchange 
completion data only when both of the units have successfully 
received data of interest. Therefore, in the case of an abnormal 
5 termination of the communication session, e.g., in the case of 
disconnection on the side of one unit whereby the other unit fail 
to successfully receive the data of interest, one of the units 
that has terminated the communication session cannot obtain the 
exchange completion data. Then, neither of the units will be able 

10 to reproduce the data of interest. Thus, a fair data exchange 
system is realized. 

Moreover, the exchange completion data is produced by each 
unit, thereby further reducing the load on the exchange completion 
data keeping device. Each unit transmits its data to the other 

15 party 1 s unit after converting it to data that cannot be reproduced 
successfully without the use of exchange completion data. 
Therefore, the other party's unit cannot successfully reproduce 
the data unless it obtains the exchange completion data. 

For example, a unit may encrypt data and transmit the 

20 encrypted data to the other party's unit, and received data can 
be reproduced by using a decryption key as encrypted exchange 
completion data . Then, it is possible to easily realize the system 
of the present invention by employing commonly-available 
encryption/decryption software . 

25 The exchange completion data keeping device determines 



whether or not each unit exchanging its data with another has 
successfully received data based on the communication result sent 
from the unit. Therefore, it is possible to easily determine 
whether or not the data exchange has been performed successfully. 
5 The program of the present invention can be distributed to 

each party f s computer device to realize an easy-to-use unit-to-unit 
data exchange system, thus facilitating the circulation of 
information contents . 

Note that the operation of each of the unit 11, the exchange 

10 completion data keeping device 21 and the public data keeping device 
31 illustrated in the first embodiment can be implemented by a 
program to be run by a general-purpose computer device. Such a 
program is stored in a storage medium such as a hard disk, an optical 
disk, a CD-ROM, a memory, or the like, and is run by a CPU, or 

15 the like. 

Note that while each unit produces and transmits the exchange 
completion data to the exchange completion data keeping device 
in the first embodiment, the exchange completion data keeping 
device may produce the exchange completion data. A system where 

20 the exchange completion data keeping device produces the exchange 
completion data will now be described. For example, where a 
decryption key is used as the exchange completion data, each unit 
wishing to exchange data with another unit requests the exchange 
completion data keeping device to produce a decryption key. In 

25 response to this, the exchange completion data keeping device 



produces a decryption key and a corresponding encryption key. The 
exchange completion data keeping device registers, in the 
determination table, the requesting unit that has made the request 
to produce the decryption key so that it can later be identified. 
5 Then, the exchange completion data keeping device transmits the 
produced encryption key to the requesting unit. Receiving the 
encryption key, the unit encrypts the data to be exchanged using 
the encryption key to produce the converted data. The converted 
data can be decrypted by using the decryption key registered in 

10 the exchange completion data. The unit transmits the converted 
data, which has been encrypted, to the other party's unit, and 
obtains data of interest from the other party f s unit . Thereafter, 
as in the embodiment described above, the unit obtains the 
decryption key from the exchange completion data keeping device 

15 to recover and reproduce the converted data that it has received 
from the other party's unit. Thus, where the exchange completion 
data keeping device produces the decryption key, the exchange 
completion data keeping device produces the encryption key 
corresponding to the decryption key at the same time, and returns 

20 the encryption key to the unit that has made the request to produce 
the decryption key. The encryption key can be said to be data 
used for converting the unconverted data (hereinafter referred 
to as the "conversion process data") so that the converted data 
can be reproduced successfully by using the decryption key. Also 

25 in this case, the exchange completion data may alternatively be 



something other than a decryption key. Moreover, the conversion 
process data may alternatively be something other than an 
encryption key. Furthermore, in the system where the exchange 
completion data is produced by the exchange completion data keeping 
5 device, the unit and the exchange completion data keeping device 
may be each implemented by a program instructing a computer device 
to perform operations as described above. Thus, if the exchange 
completion data keeping device produces the exchange completion 
data, the unit does not have to have means for producing the exchange 

10 completion data, whereby it is possible to reduce the load on the 
unit. This is advantageous where units with small processing 
capacities are used. 

In the first embodiment, the units previously exchange sizes 
of data to be transmitted to each other, and each unit can determine 

15 that the exchanged data could not be received successfully if the 
size of the received data is smaller than the scheduled data size. 
However, the method for determining whether or not the exchanged 
data has been received successfully is not limited to this. For 
example, each unit may calculate the hash value of the converted 

20 data, and register the hash value at the exchange completion data 
keeping device 21, together with the exchange completion data. 
Then, each unit, after finishing the communication session with 
the other unit, can calculate the hash value of the received data 
and transmits the hash value to the exchange completion data keeping 

25 device 21. In response to this, the exchange completion data 



keeping device 21 compares the received hash value with the 
registered hash value. The exchange completion data keeping 
device 21 determines that the data exchange has been performed 
successfully if the hash values match with each other, and that 
5 the data exchange has not been performed successfully if the hash 
values do not match with each other. The use of a hash value is 
advantageous in that it can be determined that the data exchange 
has been performed successfully even if a portion of the exchanged 
data is lost along the channel, whereby the size of the received 

10 data is less than the scheduled size but the obtained exchanged 
data can still be reproduced. It is understood that the present 
invention is not limited to what has been described above, as long 
as each unit sends the communication result with which the exchange 
completion data keeping section can determine whether or not the 

15 data exchange has been performed successfully. 

In the first embodiment, each unit transmits the NG 
information to the exchange completion data keeping device if the 
exchanged data has not been received successfully. However, it 
is not necessary to transmit the NG information if the exchange 

20 completion data keeping section transmits the exchange completion 
data only when the OK information is received from both of the 
two units. 

The process of deleting the exchange completion data stored 
in the exchange completion data keeping device 21 will now be 
25 described. FIG. 27 is a flow chart illustrating an operation of 



the exchange completion data keeping device 21 until exchange 
completion data is deleted. The operation illustrated in FIG. 
27 is performed after the exchange completion data keeping device 
21 transmits the ACK message in FIG. 26. 
5 First, the exchange completion data keeping device 21 

references the determination table to determine whether or not 
the OK information has been transmitted from both of the two units 
11a and lib exchanging data with each other (step S2701) . If the 
OK information has been transmitted from both of the units, the 

10 exchange completion data keeping device 21 determines whether or 
not the ACK message, indicating that the exchange completion data 
has been obtained successfully, has been received from both of 
the units 11a and lib (step S2702) . 

If so, indicating that the exchange completion data has been 

15 received successfully by both of the units 11a and lib, the exchange 
completion data keeping device 21 deletes the stored exchange 
completion data and the associated determination table (stepS2703) , 
and exits the process. If not, indicating that the exchange 
completion data has not successfully reached the unit or units 

20 due to a communications abnormality, etc. , the exchange completion 
data keeping device 21 resends the exchange completion data to 
the unit that has transmitted the ACK message indicating the failure 
to successfully obtain the exchange completion data (step S2704) , 
and the process returns to step S2702. 

25 If the OK information has not been received from both of 



the units in step S2701, the exchange completion data keeping device 
21 determines whether or not the NG information has been received 
from either unit (step S2705) . If the NG information has been 
received from either unit, the exchange completion data keeping 
5 device deletes the stored exchange completion data and the 
associated determination table (step S2703) , and exits the process . 

In a case where the NG information has not been received 
from either unit and there has been no response from either one 
of the units, the exchange completion data keeping device 21 

10 determines whether or not a predetermined amount of time has elapsed 
(step S2706) . If not, the exchange completion data keeping device 
21 returns to step S2701. If it has elapsed, the exchange 
completion data keeping device 21 deletes the stored exchange 
completion data and the associated determination table (stepS2703) , 

15 and exits the process. 

Thus, if a predetermined condition is met, the exchange 
completion data is deleted from the network, whereby it is possible 
to prevent the exchange completion data from being left unremoved 
for a long time and being misused. 

20 SECOND EMBODIMENT 

The second embodiment of the present invention is directed 
to a system where even if one unit fails to fully receive the 
exchanged data from the other unit after receiving a portion thereof, 
the unit can obtain the remaining portion of the exchanged data. 

25 In the second embodiment, the overall system configuration is 



similar to that of the first embodiment, and thus FIG. 1 will be 
referred to in the following description of the second embodiment. 

FIG. 28 is a sequence diagram illustrating an operation of 
the unit 11a and the unit lib when the unit 11a requests the unit 
5 lib to resend data to be exchanged. First, when finishing the 
communication session with the unit lib, the message handling 
section 112 of the unit 11a determines whether or not the size 
of the received data is smaller than the total data size previously 
sent from the unit lib (step S2801) . 

10 If so, the message handling section 112 instructs the data 

transmission/reception section 116 to send a resend request, 
including the size of the already received data, to the unit lib 
(step S2802) . In response to this, the message handling section 
112 of the unit lib identifies the remaining data based on the 

15 size of the already received data, instructs the storage device 
controlling section 113 to obtain the remaining data from the data 
storage device 114, and instructs the data transmission/reception 
section 116 to transmit the remaining data to the unit 11a (step 
S2803) . The unit 11a receives the remaining data transmitted from 

20 the unit lib, combines the remaining data with the already received 
data, stores the combined data, and returns to step S2801. 

If not, i.e., if the size of the received data is the same 
as the scheduled total size, the message handling section 112 
instructs the data transmission/reception section 116 to transmit 

25 an EXCHANGE_COMPLETED message, which indicates successful data 



reception, to the exchange completion data keeping device 21 (step 
S2805) , receives the exchange completion data from the exchange 
completion data keeping device 21 (step S2806), and exits the 
process. Note that if the unit lib gives a resend request to the 
5 unit 11a, the unit lib may operate as described above. 

Thus, if a unit fails to fully receive data of interest, 
the unit gives a resend request to the other party 1 s unit, whereby 
the unit can fully receive the data of interest. 

In the above description, it is assumed that the unit lib 

10 transmits the remaining data in response to a resend request. 
However, if the unit lib is unable to be connected, the unit 11a 
cannot successfully receive the remaining data, in which case an 
exchange completion notification indicating the failure to 
successfully receive the data is transmitted to the exchange 

15 completion data keeping device 21. 

In an embodiment where the exchange completion data is 
produced by the exchange completion data keeping device 21, when 
the unit lib resends the exchanged data in response to a resend 
request from the unit 11a, the unit lib may again obtain the 

20 conversion process data and the exchange completion data from the 
exchange completion data keeping device 21 to produce the converted 
data. In such a case, the unit lib can send the converted data 
starting from the beginning thereof . Then, the unit 11a, receiving 
the converted data starting from the beginning thereof, can discard 

25 the already received data. 



THIRD EMBODIMENT 

The third embodiment of the present invention is directed 
to a system in which the data exchange process is simplified 
depending on the user with which data is being exchanged. In the 
5 third embodiment, the overall system configuration is similar to 
that of the first embodiment, and thus FIG. 1 will be referred 
to in the following description of the third embodiment. 

In the third embodiment, the unit 11 stores its history of 
data exchanges made with other units in the data storage device 

10 114. FIG. 2 9 is a diagram illustrating an exemplary data structure 
of an exchange history stored in the unit 11. Referring to FIG. 
29, the exchange history includes the unit ID of the other party's 
unit, the number of data exchanges that have been made with the 
unit, the number of successful data exchanges that have been made 

15 with the unit, the success percentage calculated based on the number 
of data exchanges and the number of successful data exchanges, 
the data reception rate from the last data exchange, and the storage 
location of the received data from the last data exchange 
(hereinafter referred to as the "last data storage location"). 

20 When exchanging data with the other unit 11, the unit 11 registers 
the result of the data exchange as the exchange history at the 
data storage device 114. 

FIG. 30 is a flow chart illustrating an operation of the 
unit 11a when requesting the unit lib to exchange data. First, 

25 the message handling section 112 of the unit 11a produces an 



EXCHANGE_DATA message addressed to the unit lib, and instructs 
the data transmission/reception section 116 to transmit the 
produced message (step S3001). Then, the unit 11a receives an 
ACK mess age from the unit lib, and identifies the public data thereof 
5 being selected (step S3002) . 

Then, referring to the exchange history, the unit 11a 
determines the method of producing the exchange completion data 
(step S3003) . There are various methods of producing the exchange 
completion data. For example, possible methods include: if the 

10 number of exchanges is 5 or more and the success percentage is 
95%, the unit 11a may transmit the requested data as it is to the 
unit lib without subjecting it to a data conversion operation such 
as an encryption operation; if the number of exchanges is 5 or 
more and the success percentage is equal to or greater than 80% 

15 and less than 95%, the requested data maybe encrypted with a 128-bit 
encryption key, while a decryption key corresponding to the 
encryption key is used as the exchange completion data; if the 
number of exchanges is 5 or more and the success percentage is 
less than 80%, the requested data may be encrypted with a 1024-bit 

20 encryption key, while a decryption key corresponding to the 
encryption key is used as the exchange completion data; and if 
the number of exchanges is less than 5, the requested data may 
be encrypted with a 512-bit encryption key, while a decryption 
key corresponding to the encryption key is used as the exchange 

25 completion data. Thus, by using a shorter encryption key for a 

71 



higher success percentage, the operation required for the 
decryption process is reduced for a unit of a trusted party. For 
example, in the example illustrated in FIG. 29, the requested data 
will not be encrypted for the unit having the unit ID "C0001". 
5 The requested data will be encrypted with a 512-bit encryption 
key for the unit having the unit ID "C0002". The requested data 
will be encrypted with a 1024-bit encryption key for the unit having 
the unit ID "C0003". Note that the method for producing the 
exchange completion data is not limited to those described above. 

10 Then, the unit 11a produces the converted data and the 

exchange completion data using the data production method selected 
in step S3003 (step S3004), transmits the produced exchange 
completion data to the exchange completion data keeping device 
21 (step S3005) , initiates the data exchange process (step S3006) , 

15 and exits the process. 

Thus, by producing the exchange completion data based on 
the history of data exchanges made with other units, it is possible 
to simplify the data recovery process at the other party's unit. 
Thus, it is possible to provide an easy-to-use system in which 

20 an exchange with a highly trusted party can be performed quickly. 
Moreover, a unit may simplify the conversion of data to be 
transmitted based on its history of data exchanges made with other 
units, whereby a data exchange with a highly trusted party can 
be performed more quickly. 

25 The above embodiment is directed to an operation where the 

72 



exchange completion data is produced within a unit. An operation 
where the exchange completion data is produced by the exchange 
completion data keeping device will now be described. 

FIG. 31 is a flow chart illustrating an operation of the 
5 unit 11a when producing exchange completion data at the exchange 
completion data keeping device. First, the message handling 
section 112 of the unit 11a produces an EXCHANGE_DATA message 
addressed to the unit lib, and instructs the data 
transmission/reception section 116 to transmit the produced 

10 message (step S3101) . Then, the unit 11a receives an ACK message 
from the unit lib, and identifies the public data thereof being 
selected (step S3102). 

Then, referring to the exchange history, the unit 11a 
determines the method for an exchange process to be performed at 

15 the exchange completion data keeping device 21 (step S3103) . The 
method for an exchange process herein refers to the method used 
when converting data at the unit 11a. For example, in a case where 
a data encryption process is used as the conversion process, the 
unit 11a referring to the exchange history determines the length 

2 0 of the encryption key used in the encryption process . It is assumed 
that the unit 11a uses a shorter encryption key for a unit having 
a higher exchange success percentage. 

Then, the unit 11a notifies the exchange completion data 
keeping device 21 of information indicating the selected method 

25 for the exchange process (step S3104). In response to the 



notification, the exchange completion data keeping device 21 
produces the conversion process data used in the specified method 
for the conversion process (e.g., an encryption key), and further 
produces the exchange completion data corresponding to the 
5 conversion process data (e.g., a decryption key). Then, the 
exchange completion data keeping device 21 stores the produced 
exchange completion data, and transmits the exchange completion 
data to the unit 11a. 

In response to this, the unit 11a receives the conversion 

10 process data (step S3105) , produces the converted data using the 
conversion process data (step S3106), and initiates the data 
exchange with the unit lib. 

Note that the data reception rate and the last data storage 
location registered in the exchange history as illustrated in FIG. 

15 29 are used when the unit 11a makes a resend request to the unit 
lib after failing to successfully receive the data. It is assumed 
that the units previously exchange sizes of data to be transmitted 
to each other at the start of the data exchange process. Based 
on the data reception rate, the unit 11a notifies the unit lib 

20 of the communication result indicating how much of the data has 
been received successfully. In response to this, the unit lib 
identifies the remaining portion, which has not been transmitted 
successfully, and resends the remaining portion to the unit 11a. 
The unit 11a stores the resent data so that the data portion stored 

25 in last data storage location and the remaining data being resent 

74 



will be properly joined together. 

Note that the units may previously exchange hash values of 
data to be transmitted to each other at the start of the data exchange 
process. In such a case, a requesting unit can calculate the hash 
5 value of the received data to determine whether or not the data 
has been fully received. If the data has not been fully received, 
the requesting unit transmits the hash value of the received data 
portion to the other party's unit. In response to this, the other 
party's unit resends the remaining data, which can be identified 
10 based on the hash value . Thus , by using a hash value , it is possible 
to determine whether or not data of interest has been received 
even if the data size is changed along the channel. 



INDUSTRIAL APPLICABILITY 

15 A unit- to -unit data exchange system of the present invention, 

and a unit, an exchange completion data keeping device and a program 
for use in such a system, can prevent an unfair exchange from taking 
place without increasing the communications cost or the load on 
the server, and are useful in, forexample, a system where electronic 

20 data such as information contents are exchanged. 



75 



ABSTRACT 



Aft — ob j cct — — fefee — present — invention — ±s — fee — provide — a — A 

unit-to-unit data exchange system preventing in which an unfair 
5 exchange is prevented without increasing the communications cost 
or the a load on the a server. A unit (11a) exchanges data with 
a unit (lib) . An exchange completion data keeping device (21) 
keeps exchange completion data that is necessary for each unit 
(11a and lib) to reproduce the obtained data after the data exchange 

10 is completed. The exchange completion data keeping device 
transmits the exchange completion data obtained from the unit ( 1 lb) 
to the unit (11a) and transmits the exchange completion data 
obtained from the unit (11a) to the unit (lib) only when both of 
the unit (11a) and the unit (lib) have successfully received data 

15 of interest. 



76